<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // return 使用 ：
        // return ：返还
        // return 在函数里有2个作用 
        // 1.阻止代码继续执行  2.把函数内部的变量返还到函数外部

        // return;

        // 1.阻止函数内的代码继续执行
        // function fn(){
        //     console.log(111);
        //     console.log(222);
        //     return;
        //     console.log(333);
        //     console.log(6666);
        // }
        // console.log(4444);
        // fn();

        // console.log(5555);


        // 2.把函数内的变量 返还到函数外部

        // function fn(e){
        //     var a = 10;
        //     console.log(e);
        // }
        // fn();
        // console.log(a);
        // 一、把外部的内容 传递到函数内部
        // var c = 30;
        // fn(c);
        // 二、函数内部的内容返还到外部 return
    //     function fn(e){
    //         var a = 10;
    //         var b = 20;
    //         // console.log(e);
    //         return a;
    //     }
    //    var res = fn(4);
    //    console.log(res);

        // 注意： 1.如果函数没有return 那么接收到的是undefined
        // function fn(){
        //     var a = 20;
        //     return "hello";
        // }

        // var res = fn();
        // console.log(res);
        // 2.return 和 参数类似 可以返还任意类型

        // function fn(){
        //     var a = 78797;
        //     var b = "fdasfa";
        //     var c  = null;
        //     return a;
        // }
        // var res = fn();
        // console.log(res);

        // function fn(){
        //     console.log("fn");
        //     var fn2 = function(){
        //         console.log("fn2");
        //     }

        //     return fn2;
        // }

        // var res = fn();
        // console.log(res);
        // res();

        // function add(a,b,c){
        //     return a + b + c;
        // }
        // 把多元参数 改成一元参数调用 ----> curry 科里化 
    //    var res =  add(1,2,3); // ----> add(1)(2)(3);
    //    console.log(res);
        //     function add(a){
        //         return function(b){
        //             return function(c){
        //                 return a + b + c;
        //             }
        //         }
        //     }

        //    var res =  add(1)(2)(3);
        //    console.log(res);




        function add(a){
                console.log("wo");
                var fn1 = function(b){
                    console.log("ai");
                    var fn2 = function(c){
                        console.log("ni");
                        return a + b + c;
                    }
                    return fn2;
                }
                return fn1;
            }

            var fn1 = add(1);
            var fn2 =  fn1(2);
            var res =  fn2(3);
            console.log(res);




    </script>
</body>
</html>